PolymorphicMergeJoinRowConsumer.java
package org.codefilarete.stalactite.engine.runtime.load;
import javax.annotation.Nullable;
import java.util.function.Function;
import org.codefilarete.stalactite.engine.runtime.load.MergeJoinNode.MergeJoinRowConsumer;
import org.codefilarete.stalactite.mapping.EntityMapping;
import org.codefilarete.stalactite.sql.result.ColumnedRow;
import org.codefilarete.tool.Reflections;
/**
*
* @param <D>
* @param <I>
* @author Guillaume Mary
*/
public class PolymorphicMergeJoinRowConsumer<D, I> extends MergeJoinRowConsumer<D> {
private final Function<ColumnedRow, I> identifierProvider;
public PolymorphicMergeJoinRowConsumer(MergeJoinNode<D, ?, ?, ?> node, EntityMapping<D, I, ?> entityInflater) {
super(node, entityInflater.getRowTransformer());
this.identifierProvider = row -> entityInflater.getIdMapping().getIdentifierAssembler().assemble(row);
}
@Nullable
public I giveIdentifier(ColumnedRow row) {
return identifierProvider.apply(row);
}
public D transform(ColumnedRow row) {
return super.merger.transform(row);
}
/**
* Implemented for debug. DO NOT RELY ON IT for anything else.
*/
@Override
public String toString() {
return Reflections.toString(this.getClass());
}
}